package com.ruoyi.system.util;

import java.util.*;
import java.util.stream.Collectors;

public class DataPrecess {

    public static Map<String, List<String>> processData(String input) {
        Map<String, List<String>> result = new LinkedHashMap<>(); // 使用 LinkedHashMap 保持顺序
        String[] lines = input.split("\n");

        // 提取表头
        String headerLine = lines[0].trim();
        String[] headers = headerLine.split("\\|");
        List<String> headerList = Arrays.stream(headers)
                .map(String::trim)
                .filter(s -> !s.isEmpty())
                .collect(Collectors.toList());

        // 初始化 Map，每个表头对应一个空列表
        for (String header : headerList) {
            result.put(header, new ArrayList<>());
        }

        // 从第三行开始处理数据（跳过表头和分隔行）
        for (int i = 2; i < lines.length; i++) {
            String line = lines[i].trim();
            if (line.isEmpty()) {
                continue;
            }

            // 分割字段并过滤空值
            List<String> fields = Arrays.stream(line.split("\\|"))
                    .map(String::trim)
                    .filter(s -> !s.isEmpty())
                    .collect(Collectors.toList());

            if (fields.size() != headerList.size()) {
                continue; // 忽略不符合格式的行
            }

            // 将数据添加到对应的列中
            for (int j = 0; j < headerList.size(); j++) {
                String header = headerList.get(j);
                String value = fields.get(j);

                // 如果是 Source 列，去除特殊字符
                if (header.equals("Source")) {
                    value = value.replaceAll("[#$]", "");
                }

                result.get(header).add(value);
            }
        }

        return result;
    }

}
